package org.opencv.android;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.util.Log;
import android.view.WindowManager;

/**
 * Basic implementation of LoaderCallbackInterface.
 */
public abstract class BaseLoaderCallback implements LoaderCallbackInterface {

    public BaseLoaderCallback(Context AppContext) {
        mAppContext = AppContext;
    }

    public void onManagerConnected(int status)
    {
//        switch (status)
//        {
//            /** OpenCV initialization was successful. **/
//            case LoaderCallbackInterface.SUCCESS:
//            {
//                /** Application must override this method to handle successful library initialization. **/
//            } break;
//            /** OpenCV loader can not start Google Play Market. **/
//            case LoaderCallbackInterface.MARKET_ERROR:
//            {
//                Log.e(TAG, "Package installation failed!");
//                AlertDialog MarketErrorMessage = new AlertDialog.Builder(mAppContext).create();
//                MarketErrorMessage.setTitle("OpenCV Manager");
//                MarketErrorMessage.setMessage("Package installation failed!");
//                MarketErrorMessage.setCancelable(false); // This blocks the 'BACK' button
//                MarketErrorMessage.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
//                    public void onClick(DialogInterface dialog, int which) {
//                        finish();
//                    }
//                });
//                MarketErrorMessage.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//                MarketErrorMessage.show();
//            } break;
//            /** Package installation has been canceled. **/
//            case LoaderCallbackInterface.INSTALL_CANCELED:
//            {
//                Log.d(TAG, "OpenCV library instalation was canceled by user");
//                finish();
//            } break;
//            /** Application is incompatible with this version of OpenCV Manager. Possibly, a service update is required. **/
//            case LoaderCallbackInterface.INCOMPATIBLE_MANAGER_VERSION:
//            {
//                Log.d(TAG, "OpenCV Manager Service is uncompatible with this app!");
//                AlertDialog IncomatibilityMessage = new AlertDialog.Builder(mAppContext).create();
//                IncomatibilityMessage.setTitle("OpenCV Manager");
//                IncomatibilityMessage.setMessage("OpenCV Manager service is incompatible with this app. Try to update it via Google Play.");
//                IncomatibilityMessage.setCancelable(false); // This blocks the 'BACK' button
//                IncomatibilityMessage.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
//                    public void onClick(DialogInterface dialog, int which) {
//                        finish();
//                    }
//                });
//                IncomatibilityMessage.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//                IncomatibilityMessage.show();
//            } break;
//            /** Other status, i.e. INIT_FAILED. **/
//            default:
//            {
//                Log.e(TAG, "OpenCV loading failed!");
//                AlertDialog InitFailedDialog = new AlertDialog.Builder(mAppContext).create();
//                InitFailedDialog.setTitle("OpenCV error");
//                InitFailedDialog.setMessage("OpenCV was not initialised correctly. Application will be shut down");
//                InitFailedDialog.setCancelable(false); // This blocks the 'BACK' button
//                InitFailedDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
//
//                    public void onClick(DialogInterface dialog, int which) {
//                        finish();
//                    }
//                });
//                InitFailedDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//                InitFailedDialog.show();
//            } break;
//        }
    }

    public void onPackageInstall(final int operation, final InstallCallbackInterface callback)
    {
//        switch (operation)
//        {
//            case InstallCallbackInterface.NEW_INSTALLATION:
//            {
//                AlertDialog InstallMessage = new AlertDialog.Builder(mAppContext).create();
//                InstallMessage.setTitle("Package not found");
//                InstallMessage.setMessage(callback.getPackageName() + " package was not found! Try to install it?");
//                InstallMessage.setCancelable(false); // This blocks the 'BACK' button
//                InstallMessage.setButton(AlertDialog.BUTTON_POSITIVE, "Yes", new OnClickListener()
//                {
//                    public void onClick(DialogInterface dialog, int which)
//                    {
//                        callback.install();
//                    }
//                });
//                InstallMessage.setButton(AlertDialog.BUTTON_NEGATIVE, "No", new OnClickListener() {
//
//                    public void onClick(DialogInterface dialog, int which)
//                    {
//                        callback.cancel();
//                    }
//                });
//
//                InstallMessage.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//                InstallMessage.show();
//            } break;
//            case InstallCallbackInterface.INSTALLATION_PROGRESS:
//            {
//                AlertDialog WaitMessage = new AlertDialog.Builder(mAppContext).create();
//                WaitMessage.setTitle("OpenCV is not ready");
//                WaitMessage.setMessage("Installation is in progress. Wait or exit?");
//                WaitMessage.setCancelable(false); // This blocks the 'BACK' button
//                WaitMessage.setButton(AlertDialog.BUTTON_POSITIVE, "Wait", new OnClickListener() {
//                    public void onClick(DialogInterface dialog, int which) {
//                        callback.wait_install();
//                    }
//                });
//                WaitMessage.setButton(AlertDialog.BUTTON_NEGATIVE, "Exit", new OnClickListener() {
//                    public void onClick(DialogInterface dialog, int which) {
//                        callback.cancel();
//                    }
//                });
//                WaitMessage.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//                WaitMessage.show();
//            } break;
//        }
    }

    void finish()
    {
        ((Activity) mAppContext).finish();
    }

    protected Context mAppContext;
    private final static String TAG = "OpenCVLoader/BaseLoaderCallback";
}
